約 2,203,759 件
https://w.atwiki.jp/gta_sa/pages/26.html
GTA San Andreas Admin Console 【使い方】 乗っている車のパラメータ変更(鍵をかけたり)、ガレージエディット、チート、テレポーターなどが使える。 インストーラ版 (Yahoo!ブリーフケースの容量を超えているのでアップできませんでした。公式サイトからダウンロードしてください。) ZIP圧縮版 [注意] このソフトを使うときは、Visual Basic 6 SP6を入れないと動きません。 よく分からない人は、こちらのソフトをインストールしてください。 ZIP圧縮版の方は、私がVisual Basic 6 SP6が無くても動くようになってると思う。 GTASA専用Window化ツール 画像を大きく Download 使い方 gta_sa_dll.exe、gta_sa_dll.dll、d3dx9_26.dllを gta_sa.exeのあるフォルダに入れて、gta_sa_dll.exeを起動する。 ※ウイルス(?)を確認しました。 TXD Workshop 4.0b Download TXDファイルをインポート・エクスポートする。IMGファイルを参照することもでき、dffファイルなどのインポート・エクスポートも可能。 txdファイルは直接開くことが出来る。複数のtxd/dffを一気に入れることができる。 IMGTool Download TXDファイルをインポート・エクスポートする。dffファイルなどのインポート・エクスポートも可能。
https://w.atwiki.jp/x01t/pages/21.html
携帯風文字打ちを、まるちたっぷを使って実現する まるちたっぷとは何か SIP(SoftwareInpurpanel入力パネルソフト)の一種です。画面上にキーボードを表示し、タップすることで入力できます。10キーベースの入力パネルで、通常のフルキー(qwerty型)SIPよりもタップ入力が楽なのが特徴です。 ソフトの概要はこちらです:外部リンク:「まるちたっぷ。」で携帯風片手入力♪ - Kzou’s Diary (^^ゞ 配布サイトはこちらです:外部リンク:まるちたっぷ。 - KOTETU’s Hatena インストール方法 [この章は(http //hobby10.2ch.net/test/read.cgi/keitai/1198029762/314)からの転載です。20スレ目の314氏ありがとうございます。] まるちたっぷ。使ってる。 対処法書くからちゃんと覚えろよw 1.MultiKeyHookを導入する(dll関連忘れるなよ) 2.スタートアップにあるショートカットのリンク先パスをメモる (有効でないと書かれるが、これはROMファイルのショートカットだからで実際は存在する) 3.スタートアップ内のショートカットを他のフォルダにコピー 4.MultiKeyHookで「keyinject.dll」に相当する「exewindll.exe」を最後に指定する。 5.常駐メモリをなるべく軽くする。 (SB提供のかんたんwifiは重いので外すと大抵大丈夫) 余裕があつやつはPQzIIをインスツールすれば、縦画面では「まるちたっぷ。」横では標準のIMEとすることもできる。 (PQzIIはインストール方法に注意せよ) 俺はさらにボタン1とボタン2にPMAAViewとMCHARを割り当てて、片手で大抵の文章を入力できるようにしてある。 追記@Comments/動作確認/ソフトウェア - X01T 東芝 ソフトバンク - Windowsケータイ "ちなみに、某ブログにあるATOKインストール法をやってATOK入れてからスレにあげた方法の「MultiKeyHookで「keyinject.dll」に相当する「exewindll.exe」を最後に指定する」を最後にも指定しないで削除しておくとATOKも使えます。(まるちたっぷ。上でも予測変換可能)" 追記@ 181 白ロムさん [sage] Date 2008/06/13(金) 11 51 40 ID BslNpfCy0 Be http //hobby11.2ch.net/test/read.cgi/keitai/1212326655/181 179 まるちたっぷ MultiTapIM.PPC2003.arm.CABを本体にインスコ RelocateTodayDll.exeを任意のとこへ multikeyhook.cplを\Windowsへ gsgetfile.dllを\Windowsへ Windows\スタートアップ\keyinject.dll.lnkを削除 ソフトリセット スタート→設定→システム→MultiKeyHook→Multi level KeyHookにチェック \Windows\exewindll.exeを選択(=入力) RelocateTodayDll.exeを実行 RelocateTodayDll.exeのショートカットを作成、\Windows\スタートアップにコピー
https://w.atwiki.jp/win2000/pages/22.html
Windows2000 実験室 よくある質問(FAQ) Q. システムインストールしたら、動かなくなったアプリケーションがあるのですが。 A. できるだけ簡易インストールか、動的インストールをお使いください。システムインストールする必要があって、動作しないアプリケーションがある場合は、オリジナルのDLLを動作しないアプリケーションのフォルダに入れると動作する場合があります。USER32.dllをシステムインストールした時によく見られます。ハックシールドが入っているソフトの場合、kernel32をシステムインストールすると動作しないことがあります。 Q. 簡易インストールやEzKDレジストリを使ったら、動作しなくなったアプリケーションがあります。 A. EzKD レジストリにチェックを入れるとSafeDllSearchMode を無効にします。そのためカレントに 本来動作しないDLLが含まれているようなアプリケーションの場合、動作しなくなるケースがあります。 その場合は、不正なDLLを取り除いてやれば動作するようになります。 Q. システムインストールでWindows が起動しなくなることがあるのはなぜですか? A. セキュリティソフトがシステムファイルのコピーをブロックすることがあり、オリジナルのファイルをリネームしてバックアップした段階の処理で止まってしまい、システムファイルが存在しない状態になることがあるからです。リネームしたバックアップ(kernel2k.dllなどの*2k.dllファイル)をオリジナルのファイル名に復元すれば起動するようになります。 Q. 簡易インストール、動的インストール、システムインストールの違いを教えてください。 A. システムインストールはシステムフォルダにラッパーの構成を生成するので、すべてのアプリケーションが影響を受けます。 ドライバーが影響を受けて起動できない場合、システムが起動しなくなる可能性もありますのであまりお勧めしません。簡易インストールは、EzKDレジストリを有効にして、実行ファイルのフォルダにあるDLLを優先で読み込むようにして、フォルダの中だけ、影響を受けるように設定する方法で、大概のアプリケーションはこれで動作します。動的インストールは、実行ファイルの中を直接書き換えて、EzKDレジストリが無効でもそのプログラムだけが影響を受けるようにします。パフォーマンスが少しいいメリットがありますが、実行ファイルを書き換えると自分でチェックして動かなくなるアプリケーションもある欠点があります Q. 拡張カーネルとKDW のそれぞれの長所と欠点は? 拡張カーネルはパフォーマンスがよく、メモリを余分に消費することもなく、互換性も高く、不正ソフトとして検出される可能性も低くなります。システム全体が拡張カーネルのバグの影響を受けるというのが欠点です。拡張コアを使えば、KDWでは対応できないドライバ関連の関数も補完できます。初心者でも簡単にインストールすることができます。 唯一の欠点は、複数のバージョンをインストールして、アンインストールの順番を間違えるとシステムのトラブルの原因になることです。 KDWはアプリ単体に適用できるメリットがあると言えますが、EZKDレジストリを有効にして拡張カーネルのDLLをフォルダに入れて動かせば同じようなことが実現できます。インストールアンインストールが単純なのが長所です。 名前 コメント
https://w.atwiki.jp/m_shige1979/pages/456.html
設定 php.iniを編集 extension=php_mysql.dll extension=php_mysqli.dll extension=php_pdo_mysql.dll phpinfo.phpより、確認 MYSQL MYSQLi PDO_MYSQL
https://w.atwiki.jp/lockerroom/pages/14.html
/* COM操作ライブラリby 流行らせるページ管理人 Ver 3β */ ActiveX(){ global IID_IDispatch =GUID("{00020400-0000-0000-C000-000000000046}") IID_IUnknown =GUID("{00000000-0000-0000-C000-000000000046}") IID_NULL =GUID("{00000000-0000-0000-0000-000000000000}") IID_IConnectionPointContainer =GUID("{B196B284-BAB4-101A-B69C-00AA00341D07}") IID_IProvideClassInfo =GUID("{B196B283-BAB4-101A-B69C-00AA00341D07}") ;IID_IProvideClassInfo2 =GUID("{A6BC3AC0-DBAA-11CE-9DE3-00AA004BB851}") LOCALE_USER_DEFAULT =DllCall("kernel32.dll¥GetUserDefaultLCID") CoInitialize() } /* ********************************** 汎用メモリ管理 ********************************** */ ;メモリを確保しポインタを返す Malloc(size,flag=0x40){ return DllCall("kernel32.dll¥GlobalAlloc","UInt",flag,"UInt",size,"UInt") } ;ポインタで指定されたメモリを解放する Free(p){ DllCall("kernel32.dll¥GlobalFree",UInt,p,UInt) } /* ********************************** GUID関連 ********************************** */ ;CLSID文字列からGUID構造体を生成しアドレスを得る(仮) GUID(string){ size =DllCall("kernel32.dll¥MultiByteToWideChar","UInt",0,"UInt",0,"Str",string,"Int",-1,"UInt",0,"Int",0) wstr =Malloc((size+1)*2) DllCall("kernel32.dll¥MultiByteToWideChar","UInt",0,"UInt",0,"Str",string,"Int",-1,"UInt",wstr,"Int",(size+1)*2) ptr =Malloc(16) DllCall("ole32.dll¥CLSIDFromString","UInt",wstr,"UInt",ptr) Free(wstr) return ptr } ;ProgID文字列からGUID構造体を生成しアドレスを得る(仮) ProgID(string){ size =DllCall("kernel32.dll¥MultiByteToWideChar","UInt",0,"UInt",0,"Str",string,"Int",-1,"UInt",0,"Int",0) wstr =Malloc((size+1)*2) DllCall("kernel32.dll¥MultiByteToWideChar","UInt",0,"UInt",0,"Str",string,"Int",-1,"UInt",wstr,"Int",(size+1)*2) ptr =Malloc(16) DllCall("ole32.dll¥CLSIDFromProgID","UInt",wstr,"UInt",ptr) Free(wstr) return ptr } ;GUID構造体を文字列に変換 fromGUID(ByRef guid){ ptr =Malloc(80) DllCall("ole32.dll¥StringFromGUID2","UInt",guid,"UInt",ptr,"Int",80) res =wc2mb(ptr) Free(ptr) return res } /* ********************************** Unicode関連 ********************************** */ ;文字列からにUnicodeへの変換を行う ;返り値はUnicode文字列へのポインタ mb2wc(mbstr){ size =(DllCall("kernel32.dll¥MultiByteToWideChar","UInt",0,"UInt",0,"Str",mbstr,"Int",-1,"UInt",0,"Int",0)+1)*2 wstr =Malloc(size) DllCall("kernel32.dll¥MultiByteToWideChar","UInt",0,"UInt",0,"Str",mbstr,"Int",-1,"UInt",wstr,"Int",size) return wstr } mb2wc_ref(ByRef mbstr){ size =(DllCall("kernel32.dll¥MultiByteToWideChar","UInt",0,"UInt",0,"Str",mbstr,"Int",-1,"UInt",0,"Int",0)+1)*2 wstr =Malloc(size) DllCall("kernel32.dll¥MultiByteToWideChar","UInt",0,"UInt",0,"Str",mbstr,"Int",-1,"UInt",wstr,"Int",size) return wstr } ;UnicodeからAnsi文字列への変換を行う ;返り値は文字列 wc2mb(wstr){ size =DllCall("kernel32.dll¥WideCharToMultiByte","UInt",0,"UInt",0,"UInt",wstr,"Int",-1,"UInt",0,"Int",0,"UInt",0,"UInt",0) VarSetCapacity(mbstr,size) DllCall("kernel32.dll¥WideCharToMultiByte","UInt",0,"UInt",0,"UInt",wstr,"Int",-1,"Str",mbstr,"Int",size,"UInt",0,"UInt",0) return mbstr } wc2mb_ref(wstr,ByRef mbstr){ size =DllCall("kernel32.dll¥WideCharToMultiByte","UInt",0,"UInt",0,"UInt",wstr,"Int",-1,"UInt",0,"Int",0,"UInt",0,"UInt",0) VarSetCapacity(mbstr,size) DllCall("kernel32.dll¥WideCharToMultiByte","UInt",0,"UInt",0,"UInt",wstr,"Int",-1,"Str",mbstr,"Int",size,"UInt",0,"UInt",0) return size } /* ********************************** COM汎用 ********************************** */ CoInitialize(){ return DllCall("ole32.dll¥CoInitialize","UInt",0,"UInt") } CoUninitialize(){ return DllCall("ole32.dll¥CoUninitialize","UInt",0,"UInt") } OleInitialize(){ return DllCall("ole32.dll¥OleInitialize","UInt",0,"UInt") } OleUninitialize(){ return DllCall("ole32.dll¥OleUninitialize","UInt",0,"UInt") } CoTaskMemAlloc(size){ return DllCall("ole32.dll¥CoTaskMemAlloc","UInt",size,"UInt") } CoTaskMemFree(ptr){ return DllCall("ole32.dll¥CoTaskMemFree","UInt",ptr,"UInt") } M(ByRef ip,idx=0){ return NumGet(NumGet(ip+0)+4*idx) } QueryInterface(pObj,strIID=""){ global IID_IDispatch guid =0 if(strIID=""){ IID =IID_IDispatch }else if(StrLen(strIID)=38){ IID =GUID(strIID) }else{ IID =strIID } res =0 ErrorLevel =DllCall(M(pObj,0),"UInt",pObj,"UInt",IID,"UIntP",res) return res } AddRef(pObj){ if(pObj){ DllCall(M(pObj,1),"UInt",pObj) } return pObj } Release(pObj){ if(pObj){ return DllCall(M(pObj,2),"UInt",pObj) } } ReleaseL(p1,p2=-1,p3=-1,p4=-1,p5=-1,p6=-1,p7=-1,p8=-1,p9=-1){ format =A_FormatInteger SetFormat,Integer,D Loop,10{ if(p%A_Index%!=-1){ Release(p%A_Index%) } } SetFormat,Integer,%format% } /* ********************************** VARIANT関連 ********************************** */ ;Ansi文字列をBSTR形式に変換する toBSTR(str){ oc =mb2wc(str) res =DllCall("oleaut32.dll¥SysAllocString","UInt",oc,"UInt") Free(oc) return res } ;BSTRをAnsi文字列に変換する fromBSTR(bstr){ return wc2mb(bstr) } ;BSTRを解放する(VariantClear内でやってくれるはずなので多分不要) freeBSTR(bstr,get=0){ if(get!=0){ wc2mb_ref(bstr,res) }else{ res= } DllCall("oleaut32.dll¥SysFreeString","UInt",bstr) return res } vNull(){ return 0x7FFFFFFF00000000 } vObj(obj){ return 0x7FFFFFFF00000000 | obj } ;VARIANTに変換(typeには変換したい型を指定 ;settypeを指定すると、型変換した上で、型を示す値としてsettypeで指定した型を格納する toVariant(value,variant=0,type=0x08,settype=-1){ global LOCALE_USER_DEFAULT ;格納先初期化 if(variant=0){ dest =Malloc(16) }else{ dest =variant } DllCall("oleaut32.dll¥VariantInit","UInt",dest) if(type=0x08){ if(value 32 = 0x7FFFFFFF){ if(value-0x7FFFFFFF00000000=0){ ;VT_NULL NumPut(0x01,dest+0,0,"UShort") }else{ ;VT_DISPATCH NumPut(0x09,dest+0,0,"UShort") NumPut(value - 0x7FFFFFFF00000000,dest+8,0) } }else{ ;文字列の場合 NumPut(0x08,dest+0,0,"UShort") NumPut(toBSTR(value),dest+8,0) } }else{ ;それ以外の型の場合 tmp =toVariant(value) DllCall("oleaut32.dll¥VariantChangeTypeEx","UInt",dest,"UInt",tmp,"UInt",LOCALE_USER_DEFAULT,"UShort",0,"UShort",type) if(settype!=-1){ NumPut(settype,dest+0,0,"UShort") } vFree(tmp) } return dest } ;VARIANTに格納された内容を通常のAutoHotkey変数として取得 ;rawsizeが1,2,4の場合、格納されている生の値を取得 ;rawsizeが0の場合、文字列に変換して取得 fromVariant(var,rawsize=0){ global LOCALE_USER_DEFAULT if(rawsize=0){ type =NumGet(var+0,0,"UShort") if((type=9)||(type=13)){ ;COMオブジェクト pObj =NumGet(var+8) AddRef(pObj) return pObj }else if(type 0xFF){ ;ポインタもしくは配列(暫定) return NumGet(var+8) }else{ ;VT_BSTRに変換 var2 =Malloc(16) DllCall("oleaut32.dll¥VariantInit","UInt",var2) DllCall("oleaut32.dll¥VariantChangeTypeEx","UInt",var2,"UInt",var,"UInt",LOCALE_USER_DEFAULT,"UShort",0,"UShort",0x8) ;値をAnsiに変換 wc2mb_ref(NumGet(var2+8),res) vFree(var2) return res } }else if(rawsize=1){ return NumGet(var+8,0,"UChar") }else if(rawsize=2){ return NumGet(var+8,0,"UShort") }else if(rawsize=4){ return NumGet(var+8) }else{ return fromVariant(var,0) } } ;VARIANTを解放(getに-1以外を指定すると、値を取得して返す) vFree(ByRef var,get=-1){ if(get!=-1){ res =fromVariant(var,get) }else{ res =0 } DllCall("oleaut32.dll¥VariantClear","UInt",var) Free(var) return res } /* ********************************** IDispatch用 ********************************** */ ;オブジェクトを生成する CreateObject(clsid,iid="",CLSCTX=5){;CLSCTX_SERVER global IID_IDispatch if(!IID_IDispatch){ ActiveX() } guid =0 if(RegExMatch(clsid,"^¥{[¥-0-9a-fA-F]{36}¥}$")){ guid =GUID(clsid) }else{ guid =ProgID(clsid) } if(iid=""){ iid2 =IID_IDispatch }else{ iid2 =GUID(iid) } ppRes =0 el =DllCall("ole32.dll¥CoCreateInstance","UInt",guid,"UInt",0,"UInt",CLSCTX,"UInt",iid2,"UIntP",ppRes,"UInt") Free(guid) if(iid2!=IID_IDispatch){ Free(iid2) } ErrorLevel =el return ppRes } ;objが持つnameメンバのDispatchIDを得る GetDispID(ByRef obj,name){ global IID_NULL,LOCALE_USER_DEFAULT wName =mb2wc_ref(name) dispid =0 DllCall(M(obj,5),"UInt",obj,"UInt",IID_NULL,"UIntP",wName,"UInt",1,"UInt",LOCALE_USER_DEFAULT,"UIntP",dispid,"UInt") Free(wName) return dispid } ;引数からDISPPARAMSを生成 CreateParam(ByRef p1, ByRef p2, ByRef p3, ByRef p4, ByRef p5, ByRef p6, ByRef p7, ByRef p8, ByRef p9, ByRef p10){ ;引数を数える(0xFFFFFFFFFFFFFFFFの前までが与えられた引数) num =0 format =A_FormatInteger SetFormat,Integer,D Loop,10{ if(p%A_Index%=0xFFFFFFFFFFFFFFFF){ break } num++ } ;num個のVARIANTARG配列を作成 if(num=0){ pvArgs =0 }else{ pvArgs =Malloc(16*num) ptr =pvArgs+16*(num-1) ;引数をセットしていく Loop,%num%{ toVariant(p%A_Index%,ptr) ptr-=16 } } SetFormat,Integer,%format% ;DISPPARAMS作成 res =Malloc(16) NumPut(pvArgs,res+0) NumPut(num,res+8) return res } ;DISPPARAMSを解放 FreeParam(ByRef params){ num =NumGet(params+8) pvArgs =NumGet(params+0) pvNArgs =NumGet(params+4) ;VARIANTARGの解放処理 ptr =pvArgs Loop,%num%{ vFree(ptr) ptr+=16 } ;VARIANTARG自体の解放 Free(ptr) ;rgdispidNamedArgsの解放 if(pvNArgs!=0){ Free(pvNArgs) } ;本体メモリ解放 Free(params) } Invoke(ByRef pObj,ByRef dispid,mode,ByRef params){ global IID_NULL,LOCALE_USER_DEFAULT pvRes =Malloc(16) DllCall("oleaut32.dll¥VariantInit",UInt,pvRes) DllCall(M(pObj,6),UInt,pObj,UInt,dispid,UInt,IID_NULL,UInt,LOCALE_USER_DEFAULT,UInt,mode,UInt,params,UInt,pvRes,UInt,0,UInt,0,UInt) return pvRes } inv(obj,name,p1=0xFFFFFFFFFFFFFFFF,p2=0xFFFFFFFFFFFFFFFF,p3=0xFFFFFFFFFFFFFFFF,p4=0xFFFFFFFFFFFFFFFF,p5=0xFFFFFFFFFFFFFFFF,p6=0xFFFFFFFFFFFFFFFF,p7=0xFFFFFFFFFFFFFFFF,p8=0xFFFFFFFFFFFFFFFF,p9=0xFFFFFFFFFFFFFFFF,p10=0xFFFFFFFFFFFFFFFF){ if((dispid =GetDispID(obj,name))!=0){ params =CreateParam(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) pvRes =Invoke(obj,dispid,1,params) FreeParam(params) return vFree(pvRes,0) } } gp(obj,name,p1=0xFFFFFFFFFFFFFFFF,p2=0xFFFFFFFFFFFFFFFF,p3=0xFFFFFFFFFFFFFFFF,p4=0xFFFFFFFFFFFFFFFF,p5=0xFFFFFFFFFFFFFFFF,p6=0xFFFFFFFFFFFFFFFF,p7=0xFFFFFFFFFFFFFFFF,p8=0xFFFFFFFFFFFFFFFF,p9=0xFFFFFFFFFFFFFFFF,p10=0xFFFFFFFFFFFFFFFF){ if((dispid =GetDispID(obj,name))!=0){ params =CreateParam(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) pvRes =Invoke(obj,dispid,2,params) FreeParam(params) return vFree(pvRes,0) } } pp(obj,name,p1=0xFFFFFFFFFFFFFFFF,p2=0xFFFFFFFFFFFFFFFF,p3=0xFFFFFFFFFFFFFFFF,p4=0xFFFFFFFFFFFFFFFF,p5=0xFFFFFFFFFFFFFFFF,p6=0xFFFFFFFFFFFFFFFF,p7=0xFFFFFFFFFFFFFFFF,p8=0xFFFFFFFFFFFFFFFF,p9=0xFFFFFFFFFFFFFFFF,p10=0xFFFFFFFFFFFFFFFF){ if((dispid =GetDispID(obj,name))!=0){ params =CreateParam(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) ;rgdispidNamedArgsのセット namedArgs =Malloc(4) NumPut(namedArgs,params+4) NumPut(0xFFFFFFFD,namedArgs+0) NumPut(1,params+12) pvRes =Invoke(obj,dispid,4,params) FreeParam(params) return vFree(pvRes) } } /* ********************************** イベントシンク用コールバック関数 ********************************** */ GuidIsEqual(guid1,guid2){ return DllCall("MSVCRT.dll¥memcmp","UInt",guid1,"UInt",guid2,"UInt",16)=0 } EVENTSINK_QueryInterface(pEv,iid,ppv){ global if(GuidIsEqual(iid,NumGet(pEv+8))||GuidIsEqual(iid,IID_IDispatch)||GuidIsEqual(iid,IID_IUnknown)){ NumPut(pEv,ppv+0) DllCall(M(pEv,1),"UInt",pEv) return 0 } NumPut(0,ppv+0) return 0x80004002 } EVENTSINK_AddRef(pEv){ cRef =NumGet(pEv+4) cRef++ NumPut(cRef,pEv+4) return cRef } EVENTSINK_Release(pEv){ cRef =NumGet(pEv+4) cRef-- NumPut(cRef,pEv+4) if(cRef==0){ EVENTSINK_Destructor(pEv) } return cRef } EVENTSINK_GetTypeInfoCount(pEv,pct){ NumPut(0,pct+0) return 0 } EVENTSINK_GetTypeInfo(pEv,info,lcid,pInfo){ return 0x8002000B;DISP_E_BADINDEX } EVENTSINK_GetIDsOfNames(pEv,riid,szNames,cNames,lcid,pDispID){ return 0x80020006;DISP_E_UNKNOWNNAME } EVENTSINK_Invoke(pEv,dispid,riid,lcid,wFlags,params,pvRes,exinf,argerr){ pTypeInfo =NumGet(pEv+24) ;GetNames hr =DllCall(M(pTypeInfo,7),"UInt",pTypeInfo, "UInt",dispid, "UIntP",bstr, "UInt",1, "UIntP",count) if(hr!=0){ return 0 } wc2mb_ref(bstr,ev) cb =GetOleEventCallback(NumGet(pEv+12),ev) if(cb){ DllCall(cb,"UInt",NumGet(pEv+28), "UInt",params, "UInt",pvRes) } } EVENTSINK_Constructor(){ static vtEventSink if(!vtEventSink){ vtEventSink =Malloc(28) NumPut(RegisterCallback("EVENTSINK_QueryInterface"),vtEventSink+0) NumPut(RegisterCallback("EVENTSINK_AddRef"),vtEventSink+4) NumPut(RegisterCallback("EVENTSINK_Release"),vtEventSink+8) NumPut(RegisterCallback("EVENTSINK_GetTypeInfoCount"),vtEventSink+12) NumPut(RegisterCallback("EVENTSINK_GetTypeInfo"),vtEventSink+16) NumPut(RegisterCallback("EVENTSINK_GetIDsOfNames"),vtEventSink+20) NumPut(RegisterCallback("EVENTSINK_Invoke"),vtEventSink+24) } pEv =Malloc(32) NumPut(vtEventSink,pEv+0) return pEv } EVENTSINK_Destructor(pEv){ Release(NumGet(pEv+28)) Free(pEv) } /* ********************************** コネクト用のインターフェイスIDを検索 ********************************** */ find_iid(ByRef obj,ByRef itf,ByRef iid,ByRef refPTypeInfo=0xFFFFFFFFFFFFFFFF){ global LOCALE_USER_DEFAULT ;GetTypeInfo hr =DllCall(M(disp,4),"UInt",obj, "UInt",0, "UInt",LOCALE_USER_DEFAULT, "UIntP",pTypeInfo) if(hr!=0){ return hr } ;GetContainingTypeLib hr =DllCall(M(pTypeInfo,18),"UInt",pTypeInfo, "UIntP",pTypeLib, "UIntP",index) Release(pTypeInfo) if(hr!=0){ return hr } if(!itf){ ;GetTypeInfoOfGuid hr =DllCall(M(pTypeLib,5),"UInt",pTypeLib, "UIntP",iid, "UIntP",refPTypeInfo) Release(pTypeLib) return hr } count =DllCall(M(pTypeLib,3),"UInt",pTypeLib);GetTypeInfoCount found =0 index =0 Loop,%count%{ hr =DllCall(M(pTypeLib,4),"UInt",pTypeLib, "UInt",index, "UIntP",pTypeInfo);GetTypeInfo if(hr!=0){ break } hr =DllCall(M(pTypeInfo,3),"UInt",pTypeInfo, "UIntP",pTypeAttr);GetTypeAttr if(hr!=0){ Release(pTypeInfo) break } if(NumGet(pTypeAttr+40)==5){;typekind==TKIND_COCLASS cTypes =NumGet(pTypeAttr+48,"UShort");cImplTypes type =0 Loop,%cTypes%{ hr =DllCall(M(pTypeInfo,8),"UInt",pTypeInfo, "UInt",type, "UIntP",RefType);GetRefTypeOfImplType if(hr!=0){ break } hr =DllCall(M(pTypeInfo,14),"UInt",pTypeInfo, "UInt",RefType, "UIntP",pImplTypeInfo);GetRefTypeInfo if(hr!=0){ break } ;GetDocumentation hr =DllCall(M(pImplTypeInfo,12),"UInt",pImplTypeInfo, "Int",-1, "UIntP",bstr, "UInt",0, "UInt",0, "UInt",0) if(hr!=0){ Release(pImplTypeInfo) break } wc2mb_ref(bstr,str) if(str==itf){ ;GetTypeAttr if(DllCall(M(pImplTypeInfo,3),"UInt",pImplTypeInfo, "UIntP",pImplTypeAttr)=0){ found =1 iid =Malloc(16) DllCall("kernel32.dll¥RtlMoveMemory", "UInt",iid, "UInt",pImplTypeAttr, "UInt",16) if(refPTypeInfo!=0xFFFFFFFFFFFFFFFF){ refPTypeInfo =pImplTypeInfo AddRef(pImplTypeInfo) } ;ReleaseTypeAttr DllCall(M(pImplTypeInfo,3),"UInt",pImplTypeInfo, "UInt",pImplTypeAttr) } } Release(pImplTypeInfo) if(found||(hr!=0)){ break } type++ } } hr =DllCall(M(pTypeInfo,3),"UInt",pTypeInfo, "UInt",pTypeAttr);ReleaseTypeAttr Release(pTypeInfo) if(found||(hr!=0)){ break } index++ } Release(pTypeLib) if(!found){ return 0x80004002 }else{ return hr } } find_default_source(ByRef obj,ByRef iid,ByRef refPTypeInfo){ global IID_IProvideClassInfo;,IID_IProvideClassInfo2 /* pProvideClassInfo2 =QueryInterface(obj,IID_IProvideClassInfo2) if(ErrorLevel________==0){ ;GetGUID hr =DllCall(M(pProvideClassInfo2,4),"UInt",pProvideClassInfo2, "UInt",1, "UIntP",iid) Release(pProvideClassInfo2) return find_iid(obj,"",iid,refPTypeInfo) } */ pProvideClassInfo =QueryInterface(obj,IID_IProvideClassInfo) if(ErrorLevel!=0){ return ErrorLevel } ;GetClassInfo hr =DllCall(M(pProvideClassInfo,3),"UInt",pProvideClassInfo, "UIntP",pTypeInfo) Release(pProvideClassInfo) if(hr!=0){ return hr } ;GetTypeAttr hr =DllCall(M(pTypeInfo,3),"UInt",pTypeInfo, "UIntP",pTypeAttr) if(hr!=0){ Release(pTypeInfo) return hr } cTypes =NumGet(pTypeAttr+48,"UShort");cImplTypes type =0 Loop,%cTypes%{ hr =DllCall(M(pTypeInfo,9),"UInt",pTypeInfo, "UInt",type, "UIntP",iFlags);GetImplTypeFlags if(hr!=0){ continue } if((iFlags 0x3)=0x3){;((iFlags IMPLTYPEFLAG_FDEFAULT) (iFlags IMPLTYPEFLAG_FSOURCE)) hr =DllCall(M(pTypeInfo,8),"UInt",pTypeInfo, "UInt",type, "UIntP",RefType);GetRefTypeOfImplType if(hr!=0){ continue } hr =DllCall(M(pTypeInfo,14),"UInt",pTypeInfo, "UInt",RefType, "UIntP",refPTypeInfo);GetRefTypeInfo if(hr!=0){ break } } type++ } DllCall(M(pTypeInfo,3),"UInt",pTypeInfo, "UInt",pTypeAttr);ReleaseTypeAttr Release(pTypeInfo) if(!refPTypeInfo){ if(hr==0){ return 0x8000FFFF }else{ return hr } } if(DllCall(M(refPTypeInfo,3),"UInt",refPTypeInfo, "UIntP",pTypeAttr)=0){;GetTypeAttr iid =Malloc(16) DllCall("kernel32.dll¥RtlMoveMemory", "UInt",iid, "UInt",pTypeAttr, "UInt",16) DllCall(M(refPTypeInfo,3),"UInt",refPTypeInfo, "UInt",pTypeAttr);ReleaseTypeAttr }else{ Release(refPTypeInfo) refPTypeInfo ="" } return hr } EntryOleEventPrefix(ByRef prefix){ global static OleEventCount=0 if(OleEventID_%prefix%){ return OleEventID_%prefix% }else{ OleEventID_%prefix% =OleEventCount OleEventPrefix_%OleEventCount% =prefix return OleEventCount++ } } GetOleEventCallback(id,ByRef evt){ global local prefix,cb prefix =OleEventPrefix_%id% if(prefix){ if(OleEventCallback_%prefix%%evt%){ return OleEventCallback_%prefix%%evt% } cb =RegisterCallback(prefix . evt) if(cb){ OleEventCallback_%prefix%%evt% =cb return cb } } } ConnectObject(obj,prefix,itf=0xFFFFFFFFFFFFFFFF){ global IID_IConnectionPointContainer if(itf==0xFFFFFFFFFFFFFFFF){ hr =find_default_source(obj,iid,pTypeInfo) }else{ hr =find_iid(obj,itf,iid,pTypeInfo) } if(hr!=0){ ErrorLevel =hr return 0 } pContainer =QueryInterface(obj,IID_IConnectionPointContainer) if(ErrorLevel!=0){ Release(pTypeInfo) return 0 } ;FindConnectionPoint hr =DllCall(M(pContainer,4),"UInt",pContainer, "UInt",iid, "UIntP",pConnectionPoint) Release(pContainer) if(hr!=0){ Release(pTypeInfo) return 0 } pIEV =EVENTSINK_Constructor() NumPut(iid,pIEV+8) ;Advise hr =DllCall(M(pConnectionPoint,5),"UInt",pConnectionPoint, "UInt",pIEV, "UIntP",dwCookie) if(hr!=0){ return 0 } AddRef(obj) evid =EntryOleEventPrefix(prefix) NumPut(evid,pIEV+12) NumPut(dwCookie,pIEV+16) NumPut(pConnectionPoint,pIEV+20) NumPut(pTypeInfo,pIEV+24) NumPut(obj,pIEV+28) } evArgc(ByRef para){ return NumGet(para+8) } evArgv(ByRef para,idx){ num =NumGet(para+8) if(idx num){ return fromVariant(NumGet(para+0)+(num-1-idx)*16) } } evReturn(ByRef res,value){ toVariant(value,res) } /* ********************************** ディスパッチオブジェクト作成 ********************************** */ DISPATCH_QueryInterface(ptr,iid,ppv){ global if(GuidIsEqual(iid,IID_IDispatch)||GuidIsEqual(iid,IID_IUnknown)){ NumPut(ptr,ppv+0) DllCall(M(ptr,1),"UInt",ptr) return 0 }else{ NumPut(0,ppv+0) return 0x80004002 } } DISPATCH_AddRef(ptr){ cRef =NumGet(ptr+4) cRef++ NumPut(cRef,ptr+4) return cRef } DISPATCH_Release(ptr){ cRef =NumGet(ptr+4) cRef-- NumPut(cRef,ptr+4) if(cRef==0){ Free(ptr) } return cRef } DISPATCH_GetTypeInfoCount(ptr,pct){ NumPut(0,pct+0) return 0 } DISPATCH_GetTypeInfo(ptr,info,lcid,pInfo){ return 0x8002000B;DISP_E_BADINDEX } DISPATCH_GetIDsOfNames(ptr,riid,pszNames,cNames,lcid,pDispID){ wc2mb_ref(NumGet(pszNames+0),name) hr =GetOleMethodCallback(NumGet(ptr+12),name,cb) NumPut(cb,pDispID+0) return hr } DISPATCH_Invoke(ptr,dispid,riid,lcid,wFlags,params,pvRes,exinf,argerr){ DllCall(dispid,"UInt",ptr, "UInt",params, "UInt",pvRes, "UInt",wFlags) return 0 } EntryOleMethodsPrefix(ByRef prefix,ByRef id){ global static OleMethodsCount=0 if(OleMethodsID_%prefix%){ id =OleMethodsID_%prefix% }else{ OleMethodsID_%prefix% =OleMethodsCount OleMethodsPrefix_%OleMethodsCount% =prefix id =OleMethodsCount++ } } GetOleMethodCallback(id,ByRef name,ByRef cb){ global local prefix cb =0 prefix =OleMethodsPrefix_%id% if(prefix){ if(OleMethodCallback_%prefix%%name%){ cb =OleMethodCallback_%prefix%%name% return 0 }else{ cb =RegisterCallback(prefix . name) if(cb){ OleMethodCallback_%prefix%%name% =cb return 0 }else{ return 0x80020006 } } } } CreateDispatchObject(prefix,exsize=0){ global IID_IDispatch static vtDispatch if(!vtDispatch){ vtDispatch =Malloc(28) NumPut(RegisterCallback("DISPATCH_QueryInterface"),vtDispatch+0) NumPut(RegisterCallback("DISPATCH_AddRef"),vtDispatch+4) NumPut(RegisterCallback("DISPATCH_Release"),vtDispatch+8) NumPut(RegisterCallback("DISPATCH_GetTypeInfoCount"),vtDispatch+12) NumPut(RegisterCallback("DISPATCH_GetTypeInfo"),vtDispatch+16) NumPut(RegisterCallback("DISPATCH_GetIDsOfNames"),vtDispatch+20) NumPut(RegisterCallback("DISPATCH_Invoke"),vtDispatch+24) } EntryOleMethodsPrefix(prefix,id) ptr =Malloc(12+exsize) NumPut(vtDispatch,ptr+0) NumPut(IID_IDispatch,ptr+8) NumPut(id,ptr+12) return ptr }
https://w.atwiki.jp/boare/pages/78.html
English 日本語 Release Note リリース日 2009/03/16 注意事項 このバージョンはCadencii version 1.4の機能をプレビューするためのアルファ・バージョンです。未確認の不具合が多数含まれている可能性がありますので、実際の作業に使用することはお勧めしません。 使用にはversion 2.0以降の.NET Framework RuntimeおよびVisual C++ ライブラリDLLが必要です。それぞれの入手先は以下の通りです。 .NET Framework Runtime .NET Framework Developer Center ダウンロード Visual C++ ライブラリDLL Microsoft Visual C++ 2008 再頒布可能パッケージ (x86) 新機能および仕様等の変更 version 1.4a9での変更 複数トラックの同時再生を(とりあえず)可能にした(トラック間で最大0.1秒の再生秒時のズレが発生する場合があります)。 現在選択されているトラックのプレビュー再生方法を、WAVEにレンダリングして再生する方法から、リアルタイムでレンダリングし再生する方法に変更。 ゲームコントローラとの接続方法を、DirectXを使用する方法からwinmmを使用する方法に変更。(これに伴い、DirectXランタイムは起動に必須ではなくなります。) version 1.3.0からversion 1.4a8で実施した変更 VibratoのRateとDepthを、コントロールカーブ画面で編集できるようにした。 AccentとDecayを、VELと同様にコントロールカーブ画面で編集できるようにした。 繁体中国語用の言語ファイルを追加した。(翻訳者はEjiさんとkankanさんです。ありがとうございました) コントロールカーブの範囲選択時にも、クオンタイズするかどうかを選択できるようにした。 Panpotの設定が反映されるようにした。 Volumeの設定が反映されるようにした。 WAVE出力時のパフォーマンスを改善。 鍵盤押下げ時に用いる音源ファイルの生成機能を、別ツールに分離。 クオンタイズモードに1/128モードを追加. 固定長音符入力のモードに1/128を追加. VOCALOID2 VSTi Pluginを駆動するDLLをnativeのものからc++/CLIに変更。 VOCALOID2 VSTi Realtimeで使用する歌詞ファイル(*.vlf)を出力するスクリプトを同梱(動くかどうかは不明)。 ゲームコントローラを再接続できるようにした。 x86用アセンブリであることを明示してコンパイルするようにした。(これに伴い、64bit環境で起動時にクラッシュする不具合が改善されるはず) ゲームコントローラを使ってリアルタイムに音符を入力できるようにした。 ゲームコントローラ(PS2コントローラを想定)を使って音を出せるようにした。 ツールアイコンを導入。 スクリプトの呼び出し仕様を変更した。 不具合の修正 version 1.4a9での変更 トラックの追加/削除を「元に戻す」または「やり直し」するとクラッシュする不具合を修正。 WAVEファイルへのレンダリング時に、曲の末尾部分数秒がレンダリングされずに途切れてしまう不具合を修正。 version 1.3.0からversion 1.4a8で実施した変更 歌手を変更しても、強制的に再レンダリングしない限り、歌手変更が試聴結果に反映されない不具合を修正。 コントロールカーブの、データ点が無い部分をコピーし、ペーストするとクラッシュする不具合を修正。 「全てを選択」した場合、曲先頭の歌手変更イベントがコピーされてしまう不具合を修正。 ユーザー辞書を利用して歌詞を打ち込んだ場合、変換された発音記号列の先頭にタブ文字が挿入されてしまう場合がある不具合を修正。 歌詞入力時に、Tabキーを押さない限り入力内容が反映されない不具合を修正。 歌手変更トラック上の何も無いところを「消しゴム」モードでクリックするとクラッシュする不具合を修正. トラック先頭の歌手変更イベントを削除できてしまう不具合を修正. スクリプトの実行後に画面の表示が更新されない不具合を修正. スクリプトの実行結果のRedo/Undoが出来ない不具合を修正. 音符の先頭が左端に隠れている場合,ビブラートの範囲をマウスドラッグで編集できない不具合を修正. ビブラート範囲をマウスドラッグで編集する時,パーセンテージの表示が更新されない不具合を修正. 使用中のゲームコントローラを取り外すと必ずクラッシュする不具合を修正。 音符の表情ダイアログまたはビブラートダイアログをダブルクリックした直後にプレビューが必ず鳴る不具合を修正. ひらがな等を発音記号に変換する辞書がデフォルトでオフになってしまう不具合を修正。 Download Cadencii version 1.4a9 (390KB) How to get source codes 現在リポジトリが2つに分かれております。Cadenciiの次のコンポーネントはSourceForge.JPのLipSyncのCVSリポジトリにあります。 Boare.Lib.AppUtil Boare.Lib.Media Boare.Lib.Vsq bocoree また、次のコンポーネントはSourceForge.JPのCadenciiのSVNリポジトリにあります。 Cadencii vstidrv3 GenerateKeySound SourceForge.JPのリポジトリのチェックアウトは、次を参考に行ってください。パスワードが求められた場合は、単にエンターキーを押してください。 cvs -d pserver anonymous@cvs.sourceforge.jp /cvsroot/lipsync login cvs -z3 -d pserver anonymous@cvs.sourceforge.jp /cvsroot/lipsync co -r CADENCII_1_4_A_9 #modulename# google codesのリポジトリのチェックアウトは、次を参考に行ってください。 svn checkout -r 34 http //svn.sourceforge.jp/svnroot/cadencii/ cadencii-read-only 上記のコマンドは、このバージョンのソースコードをチェックアウトする場合のものです。最新のソースコードをチェックアウトしたい場合は、いずれも「-r」オプションを省いて入力する必要があります。
https://w.atwiki.jp/skyrim_mod/pages/41.html
目的 前提 手順概要 手順詳細 psc/pex ファイルの準備 プロジェクトの準備 dll ファイル名の変更 skse プロジェクトの機能を拝借 追加関数の実装 Papyrus 関数として使えるよう登録する実装 ビルドとできた dll の配置 サンプル:ExampleAddFunctionBySKSE.zip(動かし方は中にある readme.txt を参照のこと) 目的 SKSE プラグインによって Papyrus で使える関数を追加する最小サンプルを提供することが目的です。 関数の追加方法を覚えることで、適宜、用途・要求速度などの状況に応じて Papyrus と C/C++ とを組み合わせてスクリプトが書けるようになります。 前提 SKSE64プラグイン開発環境構築手順にて、skse 本体のコンパイルができる状態にあることが前提となります。 プラグインのサンプルプロジェクトである samplePlugin を元に Papyrus 関数を追加するよう書き換えます。 手順概要 まずは作業手順についてですが、以下の手順を踏みます。 CK を使って追加する関数を Papyrus スクリプトで定義し、psc/pex ファイルを用意する。 プロジェクトを準備する。 追加関数を実装する。 追加関数を Papyrus 関数として使えるよう登録する実装を追加する。 dll をビルドし、配置する。 skse_loader.exe で Skyrim を起動する。 細かく1つ1つ順を追って説明していきます。 手順詳細 psc/pex ファイルの準備 CK を起動し、メニューから [Gameplay]→[Papyrus Script Manager]を開きます。 開いたら、Papyrus Managerのリスト上で右クリックし、[New...]を選択して新しいスクリプトを作成します。 サンプルプラグインの名前は「Calculator」とします。また、Sum 関数は v1 と v2 の値を足した値を返すこととします。要はよくある計算機の例です。 以下、ソースの事例です。 Scriptname Calculator int Function Sum(int v1, int v2) global native ポイントは、 native と書いてあること。 関数本体が無いこと。 です。 必要最小限ということで今回は未 extends/global の関数を事例に挙げますが、extends/global 以外の関数も定義可能です。 このソースを保存すると普通にコンパイルでき、pex ファイルが作成されるので「Skyrim\Data\Scripts」フォルダを確認してみて下さい。psc ファイルは「Skyrim\Data\Scripts\Source」フォルダにあります。 プロジェクトの準備 dll ファイル名の変更 samplePlugin プロジェクトを活用しますが、そのままビルドするとできあがるプラグイン dll ファイルが samplePlugin.dll になってしまいます。 独自の名称の dll ファイルを作成するため「ソリューションエクスプローラ」で「samplePlugin」プロジェクトを選択し、F2 キーを押してプロジェクトの名称を変更してください。 ここでは「Calculator」とします。 すると「Calculator.dll」が生成されるようになります。 また、dll作成時に「プロジェクトとライブラリの名前が違う」と警告が出るので、exports.defも編集します。 (編集前) LIBRARY"samplePlugin" EXPORTS SKSEPlugin_Query SKSEPlugin_Load (編集後) LIBRARY"Calculator" EXPORTS SKSEPlugin_Query SKSEPlugin_Load ※ プロジェクトファイル名自体は「samplePlugin.vcproj」のままですが気にしないことにします。 skse プロジェクトの機能を拝借 skse プロジェクトの機能を使うため依存関係を作って、機能を使えるようにします。 以下、手順です。 「ソリューションエクスプローラ」で「skse」プロジェクトを右クリックし「プロパティ」を選択する。 「構成プロパティ - 全般」タブの「構成の種類」を「スタティック ライブラリ(.lib)」に変更する。 「ソリューションエクスプローラ」で「Calculator」プロジェクトを右クリックし「プロジェクト依存関係」を選択する。 「skse」プロジェクトにチェックを入れる。 追加関数の実装 以下に追加する Add 関数の例を示します。 // SInt32 や StaticFunctionTag などを使うために必要になる。 #include "skse/PapyrusNativeFunctions.h" // ... 省略 ... SInt32 Sum(StaticFunctionTag* self, SInt32 v1, SInt32 v2) { return v1 + v2; } Calculator.psc と比較してみてください。ポイントは以下の通りです。 skse/PapyrusNativeFunctions.h をインクルードしている。 int には SInt32 を使う。 第一引数に self を追加する(global の場合は StaticFunctionTag*)。 関数の中身をしっかりと実装する。 Papyrus 関数として使えるよう登録する実装 SKSE プラグインには以下の2つの関数を必ず実装する必要があります。 役割 シグネチャ SKSE プラグインの導入可否判断 bool SKSEPlugin_Query(const SKSEInterface * skse, PluginInfo * info) SKSE プラグインの初期化 bool SKSEPlugin_Load(const SKSEInterface * skse) SKSEPlugin_Load 関数にて追加関数を Papyrus 関数として使えるよう登録します。 重要な部分のみ抜粋します。 bool RegisterScaleform(GFxMovieView * view, GFxValue * root) { VMClassRegistry* registry = (*g_skyrimVM)- GetClassRegistry(); // Calculator.Sum 関数を登録 registry- RegisterFunction( new NativeFunction2 StaticFunctionTag, SInt32, SInt32, SInt32 ("Sum", "Calculator", Sum, registry)); return true; } extern "C" { // ... SKSEPlugin_Query 省略 ... bool SKSEPlugin_Load(const SKSEInterface * skse) { _MESSAGE("load"); // register scaleform callbacks // Scaleformコールバックを登録する。登録に成功するとtrueを返す。 // 登録名が既に使用済みの場合は登録失敗になるので、ユニークな名前で登録すること。 g_scaleform- Register("Calculator", RegisterScaleform); return true; } }; SKSEPlugin_Load は、SKSE によって呼び出されるSKSE プラグインの初期化関数です。ここで RegisterScaleform 関数を登録しています。 RegisterScaleform 関数が Sum 関数を Papyrus 関数として使えるよう登録する実装です。 NativeFunctionX の X は引数の数によって 0 ~ 9 まで使えます。 の中および引数は以下の通りです。 の1番目 親クラス。グローバル関数の場合は、親クラスにStaticFunctionTagを指定。 の2番目 戻り値の型。 の3番目以降 引数の型を順番に。 引数の1番目 関数名 引数の2番目 クラス名 引数の3番目 関数ポインタ 引数の4番目 VMCrassRegistry* 本サンプルでは1つだけの追加ですが、いくつでも追加できます。 ビルドとできた dll の配置 ビルドすると以下のフォルダに「Calculator.dll」ができあがります。 skse_X_XX_XX/src/skse/Release 「Calculator.dll」を以下のフォルダにコピーすれば関数の追加は完成です。 Skyrim/Data/SKSE/Plugins CK 内の Papyrus スクリプトで Calculator.Sum 関数が使えるようになっています。
https://w.atwiki.jp/vipdtm/pages/58.html
連絡事項、報告、Wiki編集の意見交換・調整はこちらで行いませう。 #article DAWのSinger Song Writerの項目 1 (2010-10-10 (日) 20 56 02)9発売してしばらく経つしいくつか修正。まずい部分があったら教えてくれ・リンク先をhttp //www.ssw.co.jp/products/ssw/win/ssw80w/index.html↓http //www.ssw.co.jp/products/ssw/index.htmlに変更・Windows のみで動作する→Lite 3.0 for Macintoshを除きWindows のみで動作する・最上位版のみVSTを使用出来る→(消去) 全然曲ができません。インチキですねw -- 昇尚子 (2014-09-12 08 56 30) 名前 コメント 無題 (2010-09-14 (火) 21 52 13)相変わらずVST荒らされてるし検索結果にでるし、そろそろ前のwiki消してもいいと思うの… 前 wiki の管理人がいないからどうしようもないな -- 名前 コメント
https://w.atwiki.jp/monstertv/pages/38.html
このページはhttp //park.geocities.jp/ts_encode09/1_01.htmlからの引用です Home BonDriverを用いたHDUS使用のメモ書き (1)用意するもの (2)リアルタイム視聴について (3)EPGで録画 (4)EPG番組表から録画~EPGデータビューア (1)用意するもの 2008/08/05現在 ・BonDriver_HDUS(人柱版6) ・EpgDataCap_Bon (人柱版8.21) ・EPGデータビューア Ver 1.19 ・BonTest 1.41m3 すべて拡張ツールの中の人サイトのロダにあがっています。 (http //2sen.dip.jp/friio/fromup.html) 作者さんに感謝。 (2008/08/03追記) Microsoft社のサイトから Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ http //www.microsoft.com/downloads/details.aspx?displaylang=ja FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647 Microsoft Visual C++ 2008 再頒布可能パッケージ http //www.microsoft.com/downloads/details.aspx?displaylang=ja FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf DirectX End-User Runtimes (June 2008) - 日本語 http //www.microsoft.com/downloads/details.aspx?FamilyID=822640ab-0983-4c41-9c70-632f6f42c557 DisplayLang=ja の3つをダウンロードして、あらかじめインストールしておくことをオススメします。 EpgDataCap_Bonを解凍したあと出てくるフォルダの中にBonDriverというフォルダがあるので そこにBonDriver_HDUS.dllをコピー。 (2)リアルタイム視聴について ~その1:BonTest単体で視聴~ BontestのフォルダにBonDriver_HDUS.dllをいれて、BonDriver.dllにリネームするだけ。 Bontestフォルダに元々存在するBonDriver.dllは削除でok。 その後BonTest.exeを起動すれば地デジ番組を視聴できます。 チャンネル番号を直接指定する必要があるのに注意。 ***注意*** この方法では、EpgDataCap_BonやSegTVなどHDUSを使用するソフトが実行中の場合 「チューナーの初期化に失敗しました」となって視聴することができません。 またこの方法で視聴中にEpgTimer_Bonで予約していた録画時間になると 録画予約が失敗してしまいます。 ~その2:EpgDataCap_BonからUDP送信・BonTestで視聴~ BontestのフォルダにあるBonDriver.dllを削除し、BonDriver_UDP.dllをBonDriver.dllにリネーム。 (2008/08/05追記) BonDriver.dllの削除やBonDriver_UDP.dllのリネームを行わなくても、 EpgDataCap_Bonの「設定」→「外部アプリケーション設定」で 「View起動時のコマンドラインオプション」に /d BonDriver_UDP.dll と入れればokです。 /nd と入れなくとも視聴できるようです。 EpgDataCap_Bonの「設定」→「ネットワーク設定」タブで 「TSデータをUDPで送信する」にチェックをいれ デフォルトの「127.0.0.1 ポート1234」そのままで「追加」ボタン。 「外部アプリケーション設定」タブで「Viewで使用するexe」にBonTestを指定し、 「View起動時のコマンドラインオプション」に /nd と入れて「OK」。 その後、EpgDataCap_Bonの「View」ボタンを押すと BonTestが起動して視聴できるかと思います。 チャンネルの切替はBonTestではなくEpgDataCap_Bonで。 この方法で視聴中に音ズレが発生した場合、 BonTest右下の「リセット」ボタンを押すことで音ズレは解消されます。 この方法なら、EpgDataCap_Bonで録画中に同番組を視聴することが可能です。 またBonTestで視聴中にEpgTimer_Bonで登録していた予約の時間になった時は 予約録画の方が優先され、BonTestで視聴中のチャンネルが予約した番組のものに 自動的に変更され、録画が始まります。 ***注意*** EpgDataCap_bonからUDP送信・BonTestで視聴するにあたっては、 まずEpgDataCap_bonの方でチャンネル取得を行う必要があります。 ただ「チャンネルスキャン」ボタンを押してスキャンが終了するまで待つだけです。 (3)EPGで録画 EpgDataCap_Bon.exeを起動。チューナーがHDUSになっていることを確認。 まずはチャンネル取得のためチャンネルスキャン。終了までじっと待つ。 その後、「設定」→「EPG取得設定」にてチャンネル一覧より EPGを取得するチャンネルを選択します。 通常は全チェックで問題ないかと。 次にEPG取得。EPGデータ取得ボタンを押して、再びじっと待つ。 以上2つの操作で、 C \Documents and Settings\ユーザ名\My Documents\EpgTimerBon\ というフォルダにチャンネル設定が、 その下の C \Documents and Settings\ユーザ名\My Documents\EpgTimerBon\EpgData というフォルダにEPGデータが格納されています。 ついで、設定を行います。 「設定」→「基本設定」タブで番組を録画する場所を指定します。 さらにEPGを用いた録画予約です。 TSEpgView_Bonを起動。 「設定」でEPGデータを置いたフォルダと予約方法を設定します。 さきほどのMy Documents\EpgTimerBon\EpgDataをEPG読み込みフォルダに設定し、 予約方法ではEpgTimer_Bonを指定して、EpgTimer_Bonの場所を設定して「OK」。 後は好きな番組を選んで「予約登録」ボタンを押すだけで EpgTimer_Bonに予約されます。 最後にEpgTimer_Bonの設定です。 まずは右上の「設定」→「チューナー設定」タブでチューナーの種類と数を設定します。 HDUS1台であれば、下のように「地デジ 1」と設定して「OK」 再度「設定」→「動作設定」タブでEpgDataCap_Bonの場所を指定します。 その下の設定はお好みで。 以上でEPGによる録画予約はすべて完了です。 EpgTimer_Bonは常時起動させておいてください。 時間になればEpgDataCap_Bonが起動して録画が始まるはずです。 (4)EPG番組表から録画~EPGデータビューア 見やすい番組表を用いるにはEPGデータビューアを使います。 まずはEPGデータビューアを起動し、「設定」→「iEPG設定」と開きます。 「iEPG機能を使用する」にチェックを入れた後、 EpgTimer_Bonをチェックし、EpgTimer_Bonの場所を指定して「OK」。 次に「設定」→「画面設定」と開きます。 「予約番組の表示」でEpgTimerにチェックが入っていることを確認した後、 その右隣の「参照」にてProgram.txt(EpgTimer_Bonの予約一覧)の位置を指定します。 ここがひっかかりやすいところで デフォルトでは C \Documents and Settings\ユーザ名\My Documents\EpgTimer\Program.txt が指定されています。 ここを C \Documents and Settings\ユーザ名\My Documents\EpgTimerBon\Program.txt に書き換えます。 デフォルトだとEpgTimerとなっている部分をEpgTimerBonにするわけです。 あとは「ファイル」→「ファイルの読み込み」で C \Documents and Settings\ユーザ名\My Documents\EpgTimerBon\EpgData 以下のEPGファイルをすべて開けば、番組表が表示されます。 予約したい番組の番組名をクリックして「EpgTimer登録」ボタンを押せば EpgTimer_Bonに予約されます。 あとはさきほどと同様にEpgTimer_Bonを起動させておくと 時間になるとEpgDataCap_Bonが起動して録画が始まります。 ついでに、EpgTimer_BonやEpgDataCap_Bonの「設定」→「外部アプリケーション設定」で 「EPG表示で使用するexe」をEPGデータビューアに指定し、 「起動時のオプション」を「EpgDataCapのデータファイルパス一覧」に設定しておくと EpgTimer_BonやEpgDataCap_Bonで「EPG表示」ボタンを押した際に EPGデータビューアが立ち上がった上で、現在のEPG番組表を表示してくれます。 以上、大ざっぱな説明ですがHDUS利用のきっかけになれば幸いです。 Home
https://w.atwiki.jp/exvs2xb/pages/479.html
23日アプデで特射覚醒リロード無し。覚醒リロードは覚めるのが速い。 -- (名無しさん) 2021-03-22 20 41 18 概要のコメントで空中を中空と書いてある様な… -- (名無し) 2021-04-20 20 01 23 中空でもまぁ意味は通る -- (名無しさん) 2021-04-20 20 09 18 【Vtuber】さくらゆいLive2d製作プロジェクト【クラリネット演奏VST】 クラウドファンディングがスタートしました! https //camp-fire.jp/projects/view/751075?utm_campaign=cp_po_share_c_msg_mypage_projects_show 期間は7月12日(金)までです! 一生のお願いです、どうかご協力お願いします! -- (名無しさん) 2024-04-28 14 30 59